#include <typescommon.h>
#include <stdarg.h>
// sprintf/sscanf不安全。格式输入输出。跟printf类似。只是输出/输入到字符串中。
// snprintf更安全。不用担心越界问题。
// vsnprintf自定义格式输出。可以实现不定长度参数输入。可以自己实现snprintf

// va_list需要头文件<stdarg.h>
// c99才支持vsnprintf。
static int mysnprintf(char *out, int outsize, const char *format, ...)
{
    va_list args;
    if(!out)
    {
        logerror("");
        return -1;
    }
    va_start(args, format);
    size_t tmplen = vsnprintf(out, outsize, format, args);
    va_end(args);
    if (tmplen > outsize)
    {
        logwarn("meby data is over:%d,%d", (int)tmplen, (int)outsize);
        tmplen = outsize;
    }
    return tmplen;
}


int main(int argc, char **argv)
{
    char tmpbuffer[32];
    time_t tmptime = time(NULL);
    snprintf(tmpbuffer, sizeof(tmpbuffer), "my data, time now = %lu, value = %s", tmptime, "jlsfe");
    logdebug("%s", tmpbuffer);
    mysnprintf(tmpbuffer, sizeof(tmpbuffer), "my data, time now = %lu, value = %s", tmptime, "jlsfe");
    logdebug("%s", tmpbuffer);
    return 1;
}
